考題日期:2016/12/20
題號:1644
星等:2
語言:C++
題目:
題意:
給予一個數 n,找出最近兩個質數的差,若 n 為質數,則輸出 0。
程式:
#include <iostream>
#include <math.h>
#define s 1300000
using namespace std;
int p[s] = {0};
void Prime()
{
int i ,j ;
p[0] = 1;
p[1] = 1;
for(i = 2; i < sqrt(s) ; i++)
{
if(p[i]==0)
{
for(j = i + i ; j < s ; j += i)
p[j] = 1;
}
}
}
int main()
{
int i,j,n;
Prime();
while(cin>>n && n!=0)
{
if(!p[n])
cout<<"0"<<endl;
else
{
for(i = n ; p[i] != 0 ; i++);
for(j = n ; p[j] != 0 ; j--);
cout<<i-j<<endl;
}
}
}
測資: